package com.ft.dao;

import com.ft.domain.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author ft
 * @since 2022-06-01
 */
@Mapper
public interface UserDao extends BaseMapper<User> {
    /**
     * 查询用户是否存在
     * @param name 用户名
     * @param password 密码
     * @return 用户实体对象
     */
    @Select("select * from shopping_user where name = #{name} and password = #{password} and state != 2")
    public User selectByUser(String name,String password);

    /**
     * 查询用户名是否存在
     * @param name :查询的用户名
     * @return 用户名
     */
    @Select("select name from shopping_user where name = #{name}")
    public String selectByName(String name);

    /**
     * 添加用户
     * @param user 添加的用户对象
     * @return 受影响的行数 1成功，0失败
     */
    @Insert("insert into shopping_user(id,name,password,phone) values(#{id},#{name},#{password},#{phone})")
    public int addUser(User user);

    /**
     *修改用户
     * @param user 传入修改的用户对象
     * @return 返回受影响的行数
     */
    @Update("update shopping_user set name=#{name},password=#{password},sex=#{sex},state=#{state},role=#{role},phone=#{phone},address=#{address} where id=#{id}")
    public int updateUser(User user);


    /**
     * 查询所有用户
     * @return 返回所有用户集合
     */
    @Select("select * from shopping_user where state != 2")
    public List<User> selectAll();

    /**
     * 查询已经逻辑删除的用户
     * @return 返回查询的list集合
     */
    @Select("select * from shopping_user where state = 2")
    public List<User> selectByState();


    /**
     *根据传入的用户id对用户做逻辑删除
     * @param id 要删除用户的id
     * @return 返回受影响的结果
     */
    @Update("update shopping_user set state=2 where id=#{id}")
    public int deleteUser(int id);
}
